This invention relates generally to computer systems, methods, and program products, and more particularly to computer systems, methods, and program products for software development.
Object oriented programming is a computer programming packaging technique which provides reusable and easily expandable programs. In a traditional procedural program, emphasis is placed on methods to be conducted on particular data sets. By contrast, in an object oriented program, emphasis is placed on data. As is well known to those having skill in the art of object oriented programming, object oriented programs are composed of various types of xe2x80x9cobjectsxe2x80x9d.
An object is a data structure, also referred to as a xe2x80x9cframexe2x80x9d, and a set of operations or functions, also referred to as xe2x80x9cmethodsxe2x80x9d, for accessing and manipulating the data structure. Objects having identical data structures and common behavior can be grouped together into, and collectively identified as a xe2x80x9cclass.xe2x80x9d Objects are instances created from a particular class. Each object inherits the data structure and methods of the particular class from which it was instantiated. A hierarchical inheritance relationship exists between multiple classes. For example, one class may be considered a xe2x80x9cparentxe2x80x9d of another class (the xe2x80x9cchildxe2x80x9d of the parent class). The child class is said to be xe2x80x9cderivedxe2x80x9d from the parent class and inherits all of the attributes and methods of the parent class.
Increasingly, developers are utilizing a team approach in developing object oriented program applications. Component-based development is quickly becoming the focus of many new development efforts. In this type of development, team members working on an application share components stored in libraries to build applications. Components are basically encapsulated software objects, or specifications capable of creating such objects, providing some type of known service that can be used in combination with other components to build applications.
TeamConnection is a software product of International Business Machines, Inc. that provides a team development environment that includes the following: configuration management; version management; change management; and build support for developing multi-tier, multi-language applications across platforms. TeamConnection provides a single repository for development data including reusable parts such as JavaBeans and ActiveX, source code such as C++, COBOL and Java, web applets, HTML documents, end user documentation, test cases, and modeled objects.
TeamConnection facilitates parallel development involving multiple developers. Various mechanisms are provided for allowing developers to access the same objects or components in a corresponding library at the same time without negatively affecting the work of others. TeamConnection also mediates changes made to objects by multiple developers and for controlling the versions of objects stored in the library.
TeamConnection manages development utilizing xe2x80x9cpartsxe2x80x9d which are uniquely named and xe2x80x9cversionedxe2x80x9d objects stored in TeamConnection. As is known to those skilled in the art of object oriented programming, TeamConnection provides an open model for using classes to create managed objects. A part class can be subclassed by applications to create versioned objects for application specific purposes. TeamConnection supports the development of client/server and distributed applications on Multiple Virtual Storage (MVS), OS/2, Unix and Windows operating systems, and can be configured as stand-alone, or in LAN-based client/server mode.
Developers utilizing the TeamConnection environment, are permitted to xe2x80x9ccheck-outxe2x80x9d parts from the TeamConnection repository to a work area. A work area is used by developers to modify existing parts and create new parts for an application. To retrieve a part from TeamConnection, a developer uses an application that checks out the part and brings over the part contents in some form that the user can work with. For example, for a part that stores C++ source code, the application would be one that retrieved the contents into a file so the developer could employ a text editor to modify the C++ source code. Then, when the changes are complete, the developer uses the same application to move the new contents back into TeamConnection. The developer then asks TeamConnection to build the C++ code into an executable. TeamConnection gives the contents of the part to a C++ compiler to produce the executable which is then saved in TeamConnection. The developer can now retrieve and test the executable.
While TeamConnection allows for the efficient management of software libraries, TeamConnection does not provide for tracking documentation which may underlie the entire software development process. Such documentation is typically tracked and managed in a separate system which is isolated from the software library and configuration control tool such as TeamConnection. Thus, while many software development teams may realize the need for a software library and configuration control tool as they develop more complex applications, other intellectual assets of the team, such as technical documentation may be scattered in a wide variety of mediums which are typically not well synchronized with the actual implementation of the software product. For example, users may not know the status of development as it relates to design specifications or other technical information during the development process. Without this information, it may be difficult, if not impossible, to track the status of particular requirements or designs through the development process and relate versions of software back to the specific requirements that resulted in the software being developed. This inability to track status may be a disadvantage if the development team is to be expanded to include more than the software developers such as to include marketing, technical writers and system architects. Furthermore, without a traceable audit process it may be difficult to achieve certification, such as ISO9000 or other certification standards.
In view of the above discussion, it is an object of the present invention to provide improved tracking of software development.
A further object of the present invention is to provide a system which allows coordination beyond traditional software developers.
Yet another object of the present invention is to provide a single system which may be used in differing aspects of the development process without redesigning the development system.
Still another object of the present invention is to provide a system development system which is flexible and allows for differing development strategies.
These and other objects of the present invention are provided by systems, methods and computer program products which provide an end-to-end software development tracking system including a software change management system which manages software versions and releases. A document management system tracks documentation related to software development and provides data associated with documents in the document management system to the software change management system. The document management system also receives data from the software change management system so as to track changes in the software versions and releases associated with documents in the document management system.
In a particular embodiment of the present invention, the document management system includes a plurality of document databases. A template encapsulates the plurality of document databases so as to coordinate the plurality of document databases as a single documentation database. In particular, the plurality of document databases may include a requirements documents database, a design documents database and a test documents database. In a specific embodiment, the software change management system is TeamConnection. Furthermore, the document management system preferably comprises a Lotus Notes template and a plurality of Lotus Notes databases generated according to the Lotus Notes template.
In another embodiment of the present invention, the tracking of development documentation and software development is provided by generating a requirements document, wherein the requirements documents provides information about a feature of a software product. As used herein, a xe2x80x9cfeaturexe2x80x9d denotes an enhancement or improvement-driven unit of work for software development. The requirements document is stored in a document library system. A first feature request to a software change management system is generated based on the generated requirements document and the first feature request associated with the stored requirements document.
Furthermore, a design document related to the stored requirements document may be generated, wherein the design document provides information as to the design of software related to a feature of the requirements document. The generated design document is stored in the document library system. The stored design document is associated with the stored requirements document and with the first feature request. A second feature request to the software change management system may also be generated based on the generated design document. The second feature request may also be associated with the design document.
A test case document may also be generated, wherein the test case document provides information regarding testing of software associated with the generated design document. An execution record associated with the generated test document may also be generated, wherein the generated execution record corresponds to the status of the testing of the software generated test case document. Furthermore, a defect request may be provided to the software change management system based on the generated execution record. As used herein, a xe2x80x9cdefectxe2x80x9d denotes a problem-driven unit of work for software development. The defect request may be associated with the execution record. A defect document corresponding to the defect request may be generated and status of the defect request obtained from the software change management system. The generated defect document may be updated with the status of the defect request.
A feature document corresponding to the first feature request may also be generated. Status of the first feature request may be obtained from the software change management system and the generated feature document updated with the status of the first feature request.
In particular embodiments, the software change management system comprises a TeamConnection management system. Furthermore, generation of a requirements document may generate a Lotus Notes requirement document which is stored in a Lotus Notes database.
As will be appreciated by those of skill in the art, the present invention may be provided as methods, systems and computer program products.